#ifndef _I_API_COMMON_H_
#define _I_API_COMMON_H_

#include "../interface/I_api_Include.h"
#include "../interface/I_api_Blob.h"
#include "../interface/S_api_Struct.h"
#include "../interface/I_api_InputLayout.h"

class I_api_Common
{
public:
	I_api_Common(){};
	~I_api_Common(){};
	
	virtual bool CompileShader(char	*	pSrcData,
														 int		SrcDataLen,
														 char	*	pFileName,
														 S_api_Shader_Macro * pDefines,
														 I_api_Include * pInclude,
														 char * pFunctionName,
														 char * pProfile,
														 unsigned int Flags,
														 I_api_Blob ** ppShader, 
														 I_api_Blob ** ppErrorMsgs)=0;

	virtual bool CompileShader(char	*	pFileName,
														S_api_Shader_Macro * pDefines,
														I_api_Include * pInclude,
														char * pFunctionName,
														char * pProfile,
														unsigned int Flags,
														I_api_Blob ** ppShader, 
														I_api_Blob ** ppErrorMsgs)=0;

	virtual bool CompileShader(char	*	pSrcData,
														int		SrcDataLen,
														S_api_Shader_Macro * pDefines,
														char * pFunctionName,
														char * pProfile,
														unsigned int Flags,
														I_api_Blob ** ppShader, 
														I_api_Blob ** ppErrorMsgs)=0;

	virtual bool CreateInputLayout(S_api_Input_Element_Desc *pInputElementDescs,
																 int NumElements,
																 void *pShaderBytecodeWithInputSignature,
																 int BytecodeLength,
																 I_api_InputLayout **ppInputLayout)=0;
};

#endif